﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using NorthWind.Entity;
using NorthWind.LocalLogic;

namespace NorthWind.Win
{
    public partial class frmProducto : Form
    {

        public event EventHandler<TbProductoBE> OnProductoSeleccionado;
 
        List<TbProductoBE> ListaProducto = new List<TbProductoBE>();
        List<TbCategoriaBE> ListaCategoria = new List<TbCategoriaBE>();

        public frmProducto()
        {
            InitializeComponent();
        }

        private void frmProducto_Load(object sender, EventArgs e)
        {
            ListaProducto = TbProductoBL.ListaTbProducto();
            ListaCategoria = TbCategoriaBL.ListaTbCategoria();

            // ProductobindingSource.DataSource = ListaProducto;
            /*this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            this.dataGridView1.RowHeadersVisible = false;*/

            var results = (from p in ListaProducto
                           join c in ListaCategoria
                               on p.CategoryID equals c.CategoryId
                           select new
                           {
                               p.CodProducto,
                               p.Descripcion,
                               p.Precio,
                               c.CategoryName
                           }).ToList();

            dataGridView1.DataSource = results;

                          
        }

     

        private void button1_Click(object sender, EventArgs e)
        {
            AgregarProductoFactura();
        }

        private void AgregarProductoFactura()
        {
            int i = dataGridView1.CurrentRow.Index;
            decimal codigoproducto =
                Convert.ToDecimal(dataGridView1.Rows[i].Cells[0].Value);

                //es un query de objetos
                TbProductoBE oProductoDTO = (from item in ListaProducto.ToArray()
                                            where item.CodProducto == codigoproducto
                                            select item).Single();
            //le pasanos un objetos y un argumento
            OnProductoSeleccionado(new object(), oProductoDTO);
            this.Close();
        }

        private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Return) {
                AgregarProductoFactura();
            }
        }

        private void dataGridView1_DoubleClick(object sender, EventArgs e)
        {
            AgregarProductoFactura();
        }
    }
}
